// 100
package AVL树;

import java.util.Comparator;
import java.util.Scanner;

public class Main {
//    private static Object PersonComparator;


    private static void menu() {
        System.out.println("##########################");
        System.out.println("##########菜单#############");
        System.out.println("###本系统是对二叉排序树的处理##");
        System.out.println("###### 1.添加元素 ##########");
        System.out.println("###### 2.删除元素 ##########");
        System.out.println("###### 3.查看树 ###########");
        System.out.println("###### 4.转化为二叉平衡树 ####");
        System.out.println("###### 5.先序遍历 #########");
        System.out.println("###### 6.中序遍历 #########");
        System.out.println("###### 7.后续遍历 #########");
        System.out.println("###### 8.是否是完全二叉树 ####");
        System.out.println("##########################");
        System.out.println("##########################");
    }

    private static String getInfo(String info) {
        Scanner option = new Scanner(System.in);
        System.out.print(info);
        String num = option.nextLine();
        return num;
    }

    private static class IntergerComparator implements Comparator<Integer> {
        @Override
        public int compare(Integer integer, Integer t1) {
            return integer - t1;
        }
    }

    public static void main(String[] args) {
        AVL<Integer> avl = new AVL<Integer>(new IntergerComparator());

        while (true) {
            // 创建一颗树
            // 打印菜单
            menu();
            // 获取输入
            String num = getInfo("请输入您要的功能");
            if (num.equals("1")) { // 新增元素
                while (true) {
                    String element = getInfo("请输入您要添加的数据(输入q退回主菜单):");
                    if (element.equals("q")) break;
                    avl.add(Integer.parseInt(element));
                }
            } else if (num.equals("2")) { // 删除元素
                while (true) {
                    String element = getInfo("请输入您要删除的数据(输入q退回主菜单):");
                    if (element.equals("q")) break;
                    avl.remove(Integer.parseInt(element));
                }
            } else if (num.equals("3")) { // 打印树
                System.out.println("树状图如下：");
                System.out.println(avl.toString());
            } else if (num.equals("4")) { // 转化为二叉平衡树
                avl.toAVL();
                System.out.println(avl.toString());
            } else if (num.equals("5")) { // 先序遍历
                avl.preorderTraversal();
            } else if (num.equals("6")) { // 中序遍历
                avl.inorderTraversal();
            } else if (num.equals("7")) { // 后序遍历
                avl.postorderTraversal();
            } else if (num.equals("8")) { // 是否是完全二叉树
                if (avl.isComplete()){
                    System.out.println("是完全二叉树");
                }else {
                    System.out.println("不是完全二叉树");
                }
            } else {
                System.out.println("请输入1～8的选项");
            }
        }
    }
}
